﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Smart
{
    public partial class frmCariListe : Form
    {
        public frmCariListe()
        {
            InitializeComponent();
        }

        private void CariListele(string filtre, bool kodaGore)
        {
            string aranan = "";
            if (string.IsNullOrEmpty(filtre))
                aranan = "%";
            else
                aranan = filtre.Replace('*', '%');

            if (filtre.Length < 3)
            {
                MessageBox.Show("En Az iki karakter girmelisiniz ?");
                return;
            }
            using (Query q = new Query(ProgramTipleri.SqlCe))
            {
                if (kodaGore)
                {
                    q.Add(string.Format("select cari_id,cari_kod,cari_adi1,cari_adi2,cari_vergi_daire,cari_vergi_no from TBL_CARI WHERE cari_kod = '{0}'", aranan));
                }
                else
                {
                    q.Add(string.Format("select cari_id,cari_kod,cari_adi1,cari_adi2,cari_vergi_daire,cari_vergi_no from TBL_CARI WHERE cari_adi1 like '{0}'", aranan));
                }

                var list = q.ToList(new { id = 0, Kodu = "", Unvani_1 = "", Unvani_2 = "", VergiDaire = "", VergiNo = "" });
                gridView1.SuspendLayout();
                gridView1.DataSource = list;
                gridView1.SetColumnStyles(list, new[] 
                                            { 
                                                new ColumnStyle("id", -1), 
                                                new ColumnStyle("Cari Ünvanı","Unvani_1", 300),
                                                new ColumnStyle("Cari Ünvanı_2","Unvani_2", 300),
                                                new ColumnStyle("Cari Kodu","Kodu", 150),
                                                new ColumnStyle("Vergi Daire","VergiDaire", 150),
                                                new ColumnStyle("Vergi No","VergiNo", 150)
                                            });
                gridView1.ResumeLayout();
                gridView1.AutoSizeCol(1);
                gridView1.AutoSizeCol(2);
                gridView1.AutoSizeCol(3);
                gridView1.AutoSizeCol(4);
                gridView1.AutoSizeCol(5);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            CariListele(txtFiltre.Text, false);
        }

        private void txtFiltre_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                CariListele(txtFiltre.Text, true);
            }
        }

        private void frmCariListe_Load(object sender, EventArgs e)
        {
            cmbIslem.Items.Add(new ComboItem() { Value = 0, Text = "" });
            cmbIslem.Items.Add(new ComboItem() { Value = 1, Text = "Sipariş" });
            cmbIslem.Items.Add(new ComboItem() { Value = 2, Text = "Cari Bilgi" });
            cmbIslem.Items.Add(new ComboItem() { Value = 3, Text = "Rapor" });
            cmbIslem.Items.Add(new ComboItem() { Value = 4, Text = "Tahsilat" });
            txtFiltre.Focus();
        }

        private Cari SecilenCari()
        {
            int cariId = Cevir.Parse<int>(gridView1[gridView1.CurrentRowIndex, 0]);
            using (Query q = new Query(ProgramTipleri.SqlCe))
            {
                q.Add(string.Format("SELECT cr.cari_id, cr.cari_kod, cr.cari_adi1, cr.cari_adi2, cr.cari_vergi_daire, cr.cari_vergi_no, ad.adres,cr.cari_fiyat_no,cr.cari_iskonto_kod,cr.cari_iskonto_orani,cari_vade FROM TBL_CARI AS cr LEFT OUTER JOIN TBL_ADRES as ad ON cr.cari_id = ad.adres_cari_id where cr.cari_id={0}", cariId));
                var sonuc = q.ToList(new { id = 0, kod = "", adi1 = "", adi2 = "", daire = "", vergino = "", adres = "", fiyatno = byte.MinValue, iskontoKod = "", iskontoOran = byte.MinValue, vade = 0 }).FirstOrDefault();
                if (sonuc != null)
                {
                    return new Cari()
                    {
                        Adi = sonuc.adi1 + " " + sonuc.adi2,
                        Adres = sonuc.adres,
                        Id = sonuc.id,
                        Kodu = sonuc.kod,
                        VergiDaire = sonuc.daire,
                        VergiNo = sonuc.vergino,
                        FiyatNo = sonuc.fiyatno,
                        IskontoKodu = sonuc.iskontoKod,
                        IskontoOrani = sonuc.iskontoOran,
                        Vade = sonuc.vade
                    };
                }
            }
            return null;
        }

        private void cmbIslem_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbIslem.SelectedIndex == 1 && gridView1.CurrentRowIndex > -1)
            {
                frmBelgeNoGiris belge = new frmBelgeNoGiris();
                belge.IslemCinsi = OfflineEvrakTipleri.Siparis;
                belge.SecilenCari = SecilenCari();
                belge.Show();
            }
            else if (cmbIslem.SelectedIndex == 2 && gridView1.CurrentRowIndex > -1)
            {
                frmCariBilgi bilgi = new frmCariBilgi();
                bilgi.CariKodu = Cevir.Parse<string>(gridView1[gridView1.CurrentRowIndex, 3]);
                bilgi.Show();
            }
            else if (cmbIslem.SelectedIndex == 3)
            {
                frmRapor rpr = new frmRapor();
                rpr.Show();
            }
            else if (cmbIslem.SelectedIndex == 4 && gridView1.CurrentRowIndex > -1)
            {
                frmBelgeNoGiris belge = new frmBelgeNoGiris();
                belge.SecilenCari = SecilenCari();
                belge.IslemCinsi = OfflineEvrakTipleri.Tahsilat;
                belge.Show();
            }

            cmbIslem.SelectedIndex = 0;
        }

        bool sipShow = false;
        private void btnKlavye_Click(object sender, EventArgs e)
        {
            if (!sipShow)
            {
                sipShow = true;
                Sip.Show();
            }
            else
            {
                sipShow = false;
                Sip.Hide();
            }
            txtFiltre.Focus();
        }

        private void btnGeri_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void gridView1_DoubleClick(object sender, EventArgs e)
        {
            if (gridView1.CurrentRowIndex > -1)
            {
                frmBelgeNoGiris belge = new frmBelgeNoGiris();
                belge.SecilenCari = SecilenCari();
                belge.Show();
            }
        }

        private void frmCariListe_Activated(object sender, EventArgs e)
        {
            txtFiltre.Focus();
        }

        private void gridView1_KeyDown(object sender, KeyEventArgs e)
        {
            if (gridView1.CurrentRowIndex > -1)
            {
                frmBelgeNoGiris belge = new frmBelgeNoGiris();
                belge.SecilenCari = SecilenCari();
                belge.Show();
            }
        }
    }
}